<?php

    Class PartidosLogic
    {
        static function addGol(&$gol)
        {
            // Pescar partido, jugador y equipo
            $partido = PartidosDAO::getById($gol->idPartido);
            $equipo = EquiposDAO::getById($gol->idEquipo);
            $jugador = JugadoresDAO::getById($gol->idJugador);

            //partido no finalizado
            if ($partido->estado == 5)
            {
                return false;
            }

            //partido.tiempo = gol.tiempo?
            if ($gol->tiempo != $partido->getTiempo())
            {
                return false;
            }

            //equipo debe estar en el partido
            if ($partido->idEquipoLocal != $equipo->idEquipo && $partido->idEquipoVisita != $equipo->idEquipo )
            {
                return false;
            }

            //jugador debe estar en el equipo
            //...

            return GolesDAO::add($gol);

        }

        static function add(&$partido)
        {
            // La fecha tiene que ser a futuro
            if (strtotime($partido->fecha) < strtotime(date("Y-m-d")))
            {
                return false;
            }

            return PartidosDAO::add($partido);

        }


        static function update(&$partido)
        {
            // Actualizar partido
            PartidosDAO::update($partido);

            // Si el nuevo estado es finalizado, ver que no van empatados si es clasificatorio
            if ($partido->estado == 5 && $partido->esClasificatorio && $partido->resultado == 3)
                return false;

            // Si el nuevo estado es finalizado, actualizar equipos y resultado
            if ($partido->estado == 5 )
            {
                // Deducir resultado:
                if ($partido->getGolesLocalSize() == $partido->getGolesVisitaSize())
                {
                    $partido->resultado = 3; // Empate
                }
                else if ($partido->getGolesLocalSize() > $partido->getGolesVisitaSize())
                {
                    $partido->resultado = 1; // Gana local
                }
                else
                {
                    $partido->resultado = 2;
                }

                // Actualizar partido
                PartidosDAO::update($partido);

                $local = $partido->getEquipoLocal();
                $visita = $partido->getEquipoVisita();

                // Empataron
                if ($partido->resultado == 3)
                {
                    $local->partidosEmpatados++;
                    $visita->partidosEmpatados++;
                }

                // Gana visita
                if ($partido->resultado == 2)
                {
                    $visita->partidosGanados++;
                }

                // Gana local
                if ($partido->resultado == 1)
                {
                    $local->partidosGanados++;
                }

                // En cualquier caso se aumenta el numero de partidos jugados
                $local->partidosJugados++;
                $visita->partidosJugados++;

                // Actualizar equipos
                EquiposDAO::update($local);
                EquiposDAO::update($visita);


                return true;
            }

            return true;
        }
    }

?>